/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package frontera.dao;

import entidad.HoraExtra;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;
import javax.persistence.Query;

/**
 *
 * @author tuareg
 */
public class HoraExtraDAO  extends DAO<HoraExtra>{

	public HoraExtraDAO(String nombreEntidad) {
		super(nombreEntidad);
	}

	public HoraExtraDAO() {
		this("Horaextra");
	}
        
	@Override
	public boolean actualizar(HoraExtra viejaEntidad, HoraExtra nuevaEntidad) {
            EntityManager em = emf.createEntityManager();
            em.getTransaction().begin();
            boolean ret= false;
            try {
                viejaEntidad = leer(viejaEntidad);
                viejaEntidad.setCedula(nuevaEntidad.getCedula());
                viejaEntidad.setCantidadHoras(nuevaEntidad.getCantidadHoras());
                viejaEntidad.setFecha(nuevaEntidad.getFecha());
                viejaEntidad.setTipoHoraExtra(nuevaEntidad.getTipoHoraExtra());
                em.merge(viejaEntidad);
                em.getTransaction().commit();
                ret = true;
            } catch (Exception e) {
                em.getTransaction().rollback();
            } finally {
                em.close();
                return ret;
            }
	}
        
        @Override
        public boolean eliminar(HoraExtra horaExtra){
                EntityManager em = emf.createEntityManager();
		em.getTransaction().begin();
		boolean ret = false;
                Query q = em.createQuery(   "SELECT he FROM HoraExtra he " +
                                        "WHERE he.id = :ID")
                                        .setParameter("ID", horaExtra.getId());
                
                HoraExtra nuevaEntidad = null;
                try {
                    nuevaEntidad = (HoraExtra)q.getSingleResult();
                } catch (NonUniqueResultException e) {
                    nuevaEntidad = (HoraExtra)q.getResultList().get(0);
                } catch (NoResultException e){
                    nuevaEntidad = null;
                }  
		
                try {
                    em.remove(nuevaEntidad);
                    em.getTransaction().commit();
                    ret = true;
		} catch (Exception e) {
                    e.printStackTrace();
                    em.getTransaction().rollback();
		} finally {
                    em.close();
                    return ret;
		}
        }
        
        public HoraExtra leer(HoraExtra par) {
            
            EntityManager em = emf.createEntityManager();
            HoraExtra horaExtra = null;

            Query q = em.createQuery(   "SELECT he FROM HoraExtra he " +
                                        "WHERE he.id = :ID")
                                        .setParameter("ID", par.getId());
           
            try {
                horaExtra = (HoraExtra)q.getSingleResult();
            } catch (NonUniqueResultException e) {
                horaExtra = (HoraExtra)q.getResultList().get(0);
            } catch (NoResultException e){
                horaExtra = null;
            }  catch (Exception e){
                e.printStackTrace();
            }finally {
                em.close();
                return horaExtra;
            }
        }	
        
       public List<HoraExtra> leerListado(long ID){
            EntityManager em = emf.createEntityManager();
            List<HoraExtra> horasExtras = new ArrayList();
            
            Query q = em.createQuery(   "SELECT he FROM HoraExtra he " +
                                        "WHERE he.empAsociado.ID = :EMPASOCIADO_ID")
                                        .setParameter("EMPASOCIADO_ID", ID);
            try{
                horasExtras = q.getResultList();
            } catch (Exception e){
                e.printStackTrace();
            }finally {
                em.close();
                return horasExtras;
            }
        }
}
